//*********************************************************
//
//    Copyright (c) Microsoft. All rights reserved.
//    This code is licensed under the Apache License, Version 2.0.
//    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
//    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
//    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
//    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//********************************************************* 

using System.Windows.Forms;

namespace Microsoft.TridentWordAddIn.Common
{
    /// <summary>
    /// Creates UserControls.
    /// </summary>
    public interface IUserControlCreator
    {
        /// <summary>
        /// Gets a user control matching the specified <c>TaskPaneKey</c>.
        /// </summary>
        /// <param name="taskPaneKey">The task pane key.</param>
        /// <returns>a <c>UserControl</c> is there is a match otherwise null</returns>
        UserControl GetUserControl(TaskPaneKey taskPaneKey);

        /// <summary>
        /// Gets the title matching the specified <c>TaskPaneKey</c>.
        /// </summary>
        /// <param name="taskPaneKey">The task pane key.</param>
        /// <returns>a <c>string</c> with the matching title</returns>
        string GetTaskPaneTitle(TaskPaneKey taskPaneKey);

        /// <summary>
        /// Gets the task pane key.
        /// </summary>
        /// <param name="taskPaneTitleOrControlId">The task pane title.</param>
        /// <returns>TaskPaneKey</returns>
        TaskPaneKey GetTaskPaneKey(string taskPaneTitleOrControlId);

        /// <summary>
        /// Gets the control id.
        /// </summary>
        /// <param name="taskPaneKey">The task pane key.</param>
        /// <returns>string</returns>
        string GetRibbonControlId(TaskPaneKey taskPaneKey);

        /// <summary>
        /// Gets the control id.
        /// </summary>
        /// <param name="controlKey">The control key.</param>
        /// <returns>string</returns>
        string GetRibbonControlId(ControlKey controlKey);
    }
}
